// 做rem适配，使用 “浏览器宽度 / 80 + 'px'” 这个公式，得到html的font-size值
// 并且，当浏览器窗口改变大小的时候，重新计算这个值

// 计算font - size值
function setFont() {
  // 获取浏览器的宽度
  let htmlWidth = document.querySelector('html').clientWidth;
  // 找到临界点，判断最大宽度和最小宽度
  if (htmlWidth < 1024) htmlWidth = 1024;
  if (htmlWidth > 1920) htmlWidth = 1920;
  // 计算fontSize
  let fontSize = htmlWidth / 80 + 'px';
  // 把fontSize值，设置给html元素即可
  document.querySelector('html').style.fontSize = fontSize;
}

setFont(); // 刷新页面，马上计算font-size值

window.onresize = function () {
  setFont(); // 当浏览器窗口改变大小的时候，还要重新计算font-size值
  // 浏览器窗口改变，改变图表的大小
  myChart1.resize()
  myChart2.resize()
  myChart3.resize()
  myChart4.resize()
  myChart5.resize()
}

let myChart1, myChart2, myChart3, myChart4, myChart5;


// -------------------------- 监控区域 ------------------------------------------
// 1. 标签页效果
$('.monitor .tabs a').on('click', function () {
  // $(this) 表示点击的那个 a
  $(this).addClass('active').siblings().removeClass('active');
  // $(this).index()  的作用是找当前元素在兄弟之间的位置，即索引
  let index = $(this).index();
  $('.monitor .content').eq(index).show().siblings('.content').hide();
})

// 2. 克隆元素
$('.monitor .marquee').each(function () {
  // $(this) 表示 当前的ul
  let x = $(this).children().clone();
  $(this).append(x);
});



// ------------------------------ 点位分布（左侧最下边的位置） ----------------------
; (function () {
  // 1. 找到元素，并初始化echarts
  // echarts.init()方法的参数，必须是DOM对象，所以需要将jQuery对象转成DOM对象
  myChart1 = echarts.init($('.pie')[0]);

  // 2. 配置项
  let option = {
    // 全局字体配置
    textStyle: {
      fontSize: 10
    },
    // 全局颜色设置
    color: ['#006cff', '#60cda0', '#ed8884', '#ff9f7f', '#0096ff', '#9fe6b8', '#32c5e9', '#1d9dff'],
    series: [
      {
        name: '点位统计',
        // type: pie 表示饼图； bar表示柱状图； line表示线形图
        type: 'pie',
        // 半径，分别为内圈半径和外圈半径
        radius: ['10%', '70%'],
        // 圆心点的坐标
        center: ['50%', '50%'],
        // roseType 表示显示模式。area表示面积模式  radius 表示半径模式
        roseType: 'radius',
        // itemStyle: {
        //   下面这项，控制扇形的角的类型（直角|圆滑）
        //   borderRadius: 8
        // },
        labelLine: {
          // 连接图像的线的长度
          length: 6,
          // 连接文字的线的长度
          length2: 8,
        },
        // 数据
        data: [
          { value: 20, name: '云南' },
          { value: 26, name: '北京' },
          { value: 24, name: '山东' },
          { value: 25, name: '河北' },
          { value: 20, name: '江苏' },
          { value: 25, name: '浙江' },
          { value: 30, name: '四川' },
          { value: 42, name: '湖北' }
        ]
      }
    ]
  };

  // 3. 创建图表
  myChart1.setOption(option);
})();



// ------------------------ 用户（中间，下边的位置） -----------------------------
(function () {
  myChart2 = echarts.init($('.bar')[0]);

  // 单独设置的某个柱子
  let item = {
    value: 1200,
    // 单个柱子的默认颜色。
    itemStyle: {
      color: '#254065'
    },
    // 单独设置这一个柱子的提示（需要是，不需要提示）
    tooltip: {
      // extraCssText: '样式'
      extraCssText: 'opacity: 0'
    },
    // 鼠标移入是否高亮(鼠标移入，让柱子的颜色和默认的颜色一样。这样就感觉不到高亮的效果了)
    emphasis: {
      itemStyle: {
        color: '#254065'
      }
    }
  };

  let option = {
    tooltip: {
      // 表示触发方式，值可选 axis 和 item
      trigger: 'item',
      // 下面这项，仅在轴触发的基础上有效
      // 表示一种效果
      // axisPointer: {            // 坐标轴指示器，坐标轴触发有效
      //     type: 'line'        // 默认为直线，可选为：'line' | 'shadow'
      // }
    },
    // 网格，表示的就是整个图表的区域
    grid: {
      left: '0%',
      right: '3%',
      bottom: '3%',
      top: '3%',
      // 下面这项，true表示包含坐标轴的文字; false表示不包括坐标轴的文字
      containLabel: true,
      // 边框颜色（color、lineStyle、itemStyle、borderColor）
      borderColor: 'rgba(0, 240, 255, 0.3)',
      // 显示
      show: true
    },
    xAxis: [
      {
        type: 'category',
        data: ['上海', '广州', '北京', '深圳', '合肥', '', '......', '', '杭州', '厦门', '济南', '成都', '重庆'],
        // 刻度设置
        axisTick: {
          // true表示刻度在柱子上；false表示柱子在两个刻度之间
          alignWithLabel: false,
          // lineStyle: { color: 'red' },
          // 删除刻度
          show: false
        },
        // 轴线上的文字设置
        axisLabel: {
          color: '#4c9bfd'
        },
        // 轴线
        axisLine: {
          show: false
        }
      }
    ],
    yAxis: [
      {
        type: 'value',
        // 刻度设置
        axisTick: {
          // 删除刻度
          show: false
        },
        // 轴线上的文字设置
        axisLabel: {
          color: '#4c9bfd'
        },
        // 轴线
        axisLine: {
          show: false
        },
        // 分割线颜色
        splitLine: {
          lineStyle: {
            color: 'rgba(0, 240, 255, 0.3)'
          }
        }
      }
    ],
    // 数据部分
    series: [
      {
        name: '直接访问',
        type: 'bar',
        // bar是柱子的意思；width是宽度
        barWidth: '60%',
        data: [2100, 1900, 1700, 1560, 1400, item, item, item, 900, 750, 600, 480, 240],
        // 每一项的设置
        itemStyle: {
          color: {
            type: 'linear',
            x: 0,
            y: 0, // x,y表示 起始点坐标
            x2: 0,
            y2: 1, // x2,y2 表示结束点的坐标
            colorStops: [{
              offset: 0, color: '#00fffb' // 0% 处的颜色(上边)
            }, {
              offset: 1, color: '#0061ce' // 100% 处的颜色（下边）
            }],
            global: false // 缺省为 false
          }
        }
      }
    ]
  };


  myChart2.setOption(option);
})();


// 下面也是自调用函数的一种形式；函数不用小括号，而是在函数前面加 ! ~ + -
// !function () {
//   console.log(123);
// }();


// ------------------------ 订单（右上角位置） -----------------------------
(function () {
  var data = {
    day365: { orders: '20,301,987', amount: '99834' },
    day90: { orders: '301,987', amount: '9834' },
    day30: { orders: '1,987', amount: '3834' },
    day1: { orders: '987', amount: '834' }
  }

  // 找到 4 个标签，注册单击事件。
  $('.order .filter a').on('click', function () {
    // 点击的时候，1、修改当前的标签样式（切换active类即可） 2、内容区的数据变化
    $(this).addClass('active').siblings().removeClass('active');
    // 获取事件源上的 data-key 的值（这个属性值，就是data中的属性名）
    // let key = $(this).attr('data-key'); // 可以获取到任何属性值
    let key = $(this).data('key'); // 专门获取 data-xxx 这样的属性值
    // console.log(key);
    $('.order .data h4').eq(0).text(data[key]['orders']);   // data.day365.orders
    $('.order .data h4').eq(1).text(data[key].amount);      // data.key
  })


  // 找到所有的 a 标签 
  let a = $('.order .filter a');
  // a 的索引值
  let index = 0;
  setInterval(() => {
    index++;
    // 判断临界条件
    if (index > 3) index = 0;
    // 要做的事情，和点击标签要做的事情，一样
    // 所以，触发标签的单击事件 即可
    // a.eq(1).click();  // 元素.click()  ----   元素.trigger('事件名');
    a.eq(index).trigger('click');  // 元素.click()  ----   元素.trigger('事件名');
  }, 1000);
})();


// ------------------------ 销售（右侧的线型图） -----------------------------
(function () {
  var data = {
    year: [
      [24, 40, 101, 134, 90, 230, 210, 230, 120, 230, 210, 120],
      [40, 64, 191, 324, 290, 330, 310, 213, 180, 200, 180, 79]
    ],
    quarter: [
      [23, 75, 12, 97, 21, 67, 98, 21, 43, 64, 76, 38],
      [43, 31, 65, 23, 78, 21, 82, 64, 43, 60, 19, 34]
    ],
    month: [
      [34, 87, 32, 76, 98, 12, 32, 87, 39, 36, 29, 36],
      [56, 43, 98, 21, 56, 87, 43, 12, 43, 54, 12, 98]
    ],
    week: [
      [43, 73, 62, 54, 91, 54, 84, 43, 86, 43, 54, 53],
      [32, 54, 34, 87, 32, 45, 62, 68, 93, 54, 54, 24]
    ]
  }
  // 一、先做好折线图，先把配置项研究明白
  myChart3 = echarts.init($('.line')[0]);
  let option = {
    color: ['#00f2f1', '#ed3f35'],
    // 提示
    tooltip: {
      // 鼠标放到具体的这一项上才能提示
      // trigger: 'item'
      // 鼠标放到轴上即可提示
      trigger: 'axis'
    },
    // 图例(使用图例的话，数据必须有name属性)
    legend: {
      // 位置
      right: '5%',
      // 文字颜色
      textStyle: {
        color: '#4c9bfd'
      }
    },
    // 网格配置
    grid: {
      left: '0%',
      right: '3%',
      bottom: '3%',
      top: '20%',
      // 下面这项，true表示包含坐标轴的文字; false表示不包括坐标轴的文字
      containLabel: true,
      // 边框颜色（color、lineStyle、itemStyle、borderColor）
      borderColor: '#012f4a',
      // 显示
      show: true
    },
    xAxis: {
      type: 'category',
      // 线两端的留白策略
      boundaryGap: false,
      data: ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'],
      // 轴线
      axisLine: {
        show: false
      },
      // 去掉刻度
      axisTick: {
        show: false
      },
      // 文字颜色
      axisLabel: {
        color: '#4c9bfd'
      }
    },
    yAxis: {
      type: 'value',
      // 轴线
      axisLine: {
        show: false
      },
      // 水平分割线
      splitLine: {
        lineStyle: {
          color: '#012f4a'
        }
      },
      // 去掉刻度
      axisTick: {
        show: false
      },
      // 文字颜色
      axisLabel: {
        color: '#4c9bfd'
      }
    },
    series: [
      {
        data: data.year[0],
        type: 'line',
        // 下面的配置，表示折线的拐点是平滑的
        smooth: true,
        name: '预期销售额'
      },
      {
        data: data.year[1],
        type: 'line',
        // 下面的配置，表示折线的拐点是平滑的
        smooth: true,
        name: '实际销售额'
      }
    ]
  };
  myChart3.setOption(option);

  // 二、注册标签的单击事件
  $('.sales .caption a').on('click', function () {
    // 更新index值
    index = $(this).index(); // 获取当前标签，在兄弟之间的索引
    // 1. 修改标签的样式
    $(this).addClass('active').siblings().removeClass('active');
    // 2. 更新图表
    // 2.1）修改配置项 （修改option）
    let type = $(this).data('type'); // year | quarter | month | week
    option.series[0].data = data[type][0];
    option.series[1].data = data[type][1];
    // 2.2）重新创建图表 （myChart.setOption(option) ）
    myChart3.setOption(option);
  })

  // 三、加入定时器
  let a = $('.sales .caption a'); // 找到所有的标签
  let index = 0;
  let timer = setInterval(() => {
    index++;
    if (index > 3) index = 0;
    a.eq(index).trigger('click');
  }, 1000);

  // 四、鼠标移入和离开事件
  $('.sales').on('mouseenter', function () {
    clearInterval(timer);
  });

  $('.sales').on('mouseleave', function () {
    timer = setInterval(() => {
      index++;
      if (index > 3) index = 0;
      a.eq(index).trigger('click');
    }, 1000);
  })
})();



// ------------------------ 右侧，第三个部分 ----------------------------------
(function () {
  // 使用echarts的步骤：
  // 1. 找到盒子，初始化echarts
  myChart4 = echarts.init($('.gauge')[0]);
  // 2. 写配置
  let option = {
    series: [
      {
        name: '访问来源',
        type: 'pie',
        // 半径（）
        radius: ['130%', '150%'],
        // 圆心点
        center: ['48%', '75%'],
        // 标签（每个扇形的提示文字）
        label: {
          show: false,
        },
        // 鼠标移入，扇形的缩放控制，0表示不缩放
        hoverOffset: 0,
        // 起始角度
        startAngle: 180,
        data: [
          {
            value: 100, name: '直接访问', itemStyle: {
              color: {
                type: 'linear',
                x: 0,
                y: 0, // x,y表示 起始点坐标
                x2: 0,
                y2: 1, // x2,y2 表示结束点的坐标
                colorStops: [{
                  offset: 0, color: '#00c9e0' // 0% 处的颜色(上边)
                }, {
                  offset: 1, color: '#005fc1' // 100% 处的颜色（下边）
                }],
                global: false // 缺省为 false
              }
            }
          },
          { value: 100, name: '邮件营销', itemStyle: { color: '#12274d' } },
          { value: 200, name: '联盟广告', itemStyle: { color: 'transparent' } }
        ]
      }
    ]
  }
  // 3. 创建图表
  myChart4.setOption(option);
})();



(function () {
  var data = [
    { name: '可爱多', num: '9,086' },
    { name: '娃哈哈', num: '8,341' },
    { name: '喜之郎', num: '7,407' },
    { name: '八喜', num: '6,080' },
    { name: '小洋人', num: '6,724' },
    { name: '好多鱼', num: '2,170' },
  ];

  // 找到所有的标签 （li）
  let lis = $('.top .sup li');
  // 设置默认的索引值
  let index = 0;

  // 把数据放到 ul.sub 里面
  function render() {
    // 给标签加入类
    lis.eq(index).addClass('active').siblings().removeClass('active');
    let str = '';
    // 打乱数组的顺序
    let result = data.sort(() => 0.5 - Math.random());
    // 遍历、渲染数据到页面中
    // for (let i = 0; i < data.length; i++)
    // data.forEach(item => {});
    $.each(result, function (index, item) {
      str += `<li><span>${item.name}</span><span>${item.num} <s class="icon-up"></s></span></li>`; // str = str + 'hello '
    });
    // 遍历结束，str中包括 6 个 hello
    // console.log(str);
    $('ul.sub').html(str); // 把拼接好的 6 个 li 标签，放到ul中
  }
  render(); // 调用函数

  // 加入定时器，让标签和内容自动切换
  let timer = setInterval(() => {
    index++;
    if (index > 4) index = 0;
    render(); // 1. 切换标签的类 | 2. 切换内容
  }, 1000)

  // 鼠标移入标签上（显示当前标签的内容|清除定时器）
  lis.on('mouseenter', function () {
    clearInterval(timer);
    index = $(this).index();
    render();
  })

  lis.on('mouseleave', function () {
    timer = setInterval(() => {
      index++;
      if (index > 4) index = 0;
      render(); // 1. 切换标签的类 | 2. 切换内容
    }, 1000)
  })
})();


// ----------------------------- 地图 ------------------------------
(function () {
  myChart5 = echarts.init($('.geo')[0]);
  var geoCoordMap = {
    '新疆玛纳斯基地': [86.22, 44.30],
    '九江': [116.00, 29.70],
    '新乡': [116.402217, 35.311657],
    ' ': [79.92, 37.12],
    '  ': [86.85, 47.70],
    '若羌县': [88.17, 39.02],
    '上海': [121.4648, 31.2891],
    '东莞': [113.8953, 22.901],
    '东营': [118.7073, 37.5513],
    '中山': [113.4229, 22.478],
    '临汾': [111.4783, 36.1615],
    '临沂': [118.3118, 35.2936],
    '丹东': [124.541, 40.4242],
    '丽水': [119.5642, 28.1854],
    '乌鲁木齐': [87.9236, 43.5883],
    '佛山': [112.8955, 23.1097],
    '保定': [115.0488, 39.0948],
    '兰州': [103.5901, 36.3043],
    '包头': [110.3467, 41.4899],
    '北京': [116.4551, 40.2539],
    '北海': [109.314, 21.6211],
    '南京': [118.8062, 31.9208],
    '南宁': [108.479, 23.1152],
    '南昌': [116.0046, 28.6633],
    '南通': [121.1023, 32.1625],
    '厦门': [118.1689, 24.6478],
    '台州': [121.1353, 28.6688],
    '合肥': [117.29, 32.0581],
    '呼和浩特': [111.4124, 40.4901],
    '咸阳': [108.4131, 34.8706],
    '哈尔滨': [127.9688, 45.368],
    '唐山': [118.4766, 39.6826],
    '嘉兴': [120.9155, 30.6354],
    '大同': [113.7854, 39.8035],
    '大连': [122.2229, 39.4409],
    '天津': [117.4219, 39.4189],
    '太原': [112.3352, 37.9413],
    '威海': [121.9482, 37.1393],
    '宁波': [121.5967, 29.6466],
    '宝鸡': [107.1826, 34.3433],
    '宿迁': [118.5535, 33.7775],
    '常州': [119.4543, 31.5582],
    '广州': [113.5107, 23.2196],
    '廊坊': [116.521, 39.0509],
    '延安': [109.1052, 36.4252],
    '张家口': [115.1477, 40.8527],
    '徐州': [117.5208, 34.3268],
    '德州': [116.6858, 37.2107],
    '惠州': [114.6204, 23.1647],
    '成都': [103.9526, 30.7617],
    '扬州': [119.4653, 32.8162],
    '承德': [117.5757, 41.4075],
    '拉萨': [91.1865, 30.1465],
    '无锡': [120.3442, 31.5527],
    '日照': [119.2786, 35.5023],
    '昆明': [102.9199, 25.4663],
    '杭州': [119.5313, 29.8773],
    '枣庄': [117.323, 34.8926],
    '柳州': [109.3799, 24.9774],
    '株洲': [113.5327, 27.0319],
    '武汉': [114.3896, 30.6628],
    '汕头': [117.1692, 23.3405],
    '江门': [112.6318, 22.1484],
    '沈阳': [123.1238, 42.1216],
    '沧州': [116.8286, 38.2104],
    '河源': [114.917, 23.9722],
    '泉州': [118.3228, 25.1147],
    '泰安': [117.0264, 36.0516],
    '泰州': [120.0586, 32.5525],
    '济南': [117.1582, 36.8701],
    '济宁': [116.8286, 35.3375],
    '海口': [110.3893, 19.8516],
    '淄博': [118.0371, 36.6064],
    '淮安': [118.927, 33.4039],
    '深圳': [114.5435, 22.5439],
    '清远': [112.9175, 24.3292],
    '温州': [120.498, 27.8119],
    '渭南': [109.7864, 35.0299],
    '湖州': [119.8608, 30.7782],
    '湘潭': [112.5439, 27.7075],
    '滨州': [117.8174, 37.4963],
    '潍坊': [119.0918, 36.524],
    '烟台': [120.7397, 37.5128],
    '玉溪': [101.9312, 23.8898],
    '珠海': [113.7305, 22.1155],
    '盐城': [120.2234, 33.5577],
    '盘锦': [121.9482, 41.0449],
    '石家庄': [114.4995, 38.1006],
    '福州': [119.4543, 25.9222],
    '秦皇岛': [119.2126, 40.0232],
    '绍兴': [120.564, 29.7565],
    '聊城': [115.9167, 36.4032],
    '肇庆': [112.1265, 23.5822],
    '舟山': [122.2559, 30.2234],
    '苏州': [120.6519, 31.3989],
    '莱芜': [117.6526, 36.2714],
    '菏泽': [115.6201, 35.2057],
    '营口': [122.4316, 40.4297],
    '葫芦岛': [120.1575, 40.578],
    '衡水': [115.8838, 37.7161],
    '衢州': [118.6853, 28.8666],
    '西宁': [101.4038, 36.8207],
    '西安': [109.1162, 34.2004],
    '贵阳': [106.6992, 26.7682],
    '连云港': [119.1248, 34.552],
    '邢台': [114.8071, 37.2821],
    '邯郸': [114.4775, 36.535],
    '郑州': [113.4668, 34.6234],
    '鄂尔多斯': [108.9734, 39.2487],
    '重庆': [107.7539, 30.1904],
    '金华': [120.0037, 29.1028],
    '铜川': [109.0393, 35.1947],
    '银川': [106.3586, 38.1775],
    '镇江': [119.4763, 31.9702],
    '长春': [125.8154, 44.2584],
    '长沙': [113.0823, 28.2568],
    '长治': [112.8625, 36.4746],
    '阳泉': [113.4778, 38.0951],
    '青岛': [120.4651, 36.3373],
    '韶关': [113.7964, 24.7028]
  };

  var BJData = [
    [{
      name: '新乡'
    }, {
      name: '新乡',
      value: 200
    }],
    [{
      name: '新乡'
    }, {
      name: '呼和浩特',
      value: 90
    }],
    [{
      name: '新乡'
    }, {
      name: '哈尔滨',
      value: 90
    }],
    [{
      name: '新乡'
    }, {
      name: '石家庄',
      value: 90
    }],
    [{
      name: '新乡'
    }, {
      name: '昆明',
      value: 30
    }],
    [{
      name: '新乡'
    }, {
      name: '北京',
      value: 100
    }],
    [{
      name: '新乡'
    }, {
      name: '长春',
      value: 40
    }],
    [{
      name: '新乡'
    }, {
      name: '重庆',
      value: 40
    }],
    [{
      name: '新乡'
    }, {
      name: '贵阳',
      value: 50
    }],
    [{
      name: '新乡'
    }, {
      name: '南宁',
      value: 30
    }],
    [{
      name: '新乡'
    }, {
      name: '济南',
      value: 10
    }],
    [{
      name: '新乡'
    }, {
      name: '太原',
      value: 40
    }],
    [{
      name: '新乡'
    }, {
      name: '西安',
      value: 60
    }],
    [{
      name: '新乡'
    }, {
      name: '武汉',
      value: 50
    }],
    [{
      name: '新乡'
    }, {
      name: '合肥',
      value: 40
    }],
    [{
      name: '新乡'
    }, {
      name: '南京',
      value: 30
    }],
    [{
      name: '新乡'
    }, {
      name: '沈阳',
      value: 20
    }],
    [{
      name: '新乡'
    }, {
      name: '成都',
      value: 10
    }]
  ];

  var SHData = [
    [{
      name: '九江'
    }, {
      name: '九江',
      value: 200
    }],

    [{
      name: '九江'
    }, {
      name: '长沙',
      value: 95
    }],
    [{
      name: '九江'
    }, {
      name: '武汉',
      value: 30
    }],
    [{
      name: '九江'
    }, {
      name: '南昌',
      value: 20
    }],
    [{
      name: '九江'
    }, {
      name: '合肥',
      value: 70
    }],
    [{
      name: '九江'
    }, {
      name: '南京',
      value: 60
    }],
    [{
      name: '九江'
    }, {
      name: '福州',
      value: 50
    }],
    [{
      name: '九江'
    }, {
      name: '上海',
      value: 100
    }],
    [{
      name: '九江'
    }, {
      name: '深圳',
      value: 100
    }],

  ];

  var GZData = [
    [{
      name: '新疆玛纳斯基地'
    }, {
      name: '新疆玛纳斯基地',
      value: 200
    }],
    [{
      name: '新疆玛纳斯基地'
    }, {
      name: '  ',
      value: 90
    }],
    [{
      name: '新疆玛纳斯基地'
    }, {
      name: ' ',
      value: 40
    }],
    [{
      name: '新疆玛纳斯基地'
    }, {
      name: '呼和浩特',
      value: 90
    }],
    [{
      name: '新疆玛纳斯基地'
    }, {
      name: '昆明',
      value: 40
    }],
    [{
      name: '新疆玛纳斯基地'
    }, {
      name: '成都',
      value: 10
    }],
    [{
      name: '新疆玛纳斯基地'
    }, {
      name: '兰州',
      value: 95
    }],
    [{
      name: '新疆玛纳斯基地'
    }, {
      name: '银川',
      value: 90
    }],
    [{
      name: '新疆玛纳斯基地'
    }, {
      name: '西宁',
      value: 80
    }],

  ];

  var planePath = 'path://M.6,1318.313v-89.254l-319.9-221.799l0.073-208.063c0.521-84.662-26.629-121.796-63.961-121.491c-37.332-0.305-64.482,36.829-63.961,121.491l0.073,208.063l-319.9,221.799v89.254l330.343-157.288l12.238,241.308l-134.449,92.931l0.531,42.034l175.125-42.917l175.125,42.917l0.531-42.034l-134.449-92.931l12.238-241.308L1705';

  var convertData = function (data) {
    var res = [];
    for (var i = 0; i < data.length; i++) {
      var dataItem = data[i];
      var fromCoord = geoCoordMap[dataItem[0].name];
      var toCoord = geoCoordMap[dataItem[1].name];
      if (fromCoord && toCoord) {
        res.push([{
          coord: fromCoord
        }, {
          coord: toCoord
        }]);
      }
    }
    return res;
  };

  var color = ['#3ed4ff', '#ffa022', '#a6c84c'];
  var series = [];
  [
    ['新乡', BJData],
    ['九江', SHData],
    ['新疆', GZData]
  ].forEach(function (item, i) {
    series.push({
      name: item[0] + ' Top10',
      type: 'lines',
      zlevel: 1,
      effect: {
        show: true,
        period: 6,
        trailLength: 0.7,
        color: '#fff',
        symbolSize: 3
      },
      lineStyle: {
        normal: {
          color: color[i],
          width: 0,
          curveness: 0.2
        }
      },
      data: convertData(item[1])
    }, {
      name: item[0] + ' Top10',
      type: 'lines',
      zlevel: 2,
      effect: {
        show: true,
        period: 6,
        trailLength: 0,
        symbol: planePath,
        symbolSize: 15
      },
      lineStyle: {
        normal: {
          color: color[i],
          width: 1,
          opacity: 0.4,
          curveness: 0.2
        }
      },
      data: convertData(item[1])
    }, {
      name: item[0] + ' Top10',
      type: 'effectScatter',
      coordinateSystem: 'geo',
      zlevel: 2,
      rippleEffect: {
        brushType: 'stroke'
      },
      label: {
        normal: {
          show: true,
          position: 'right',
          formatter: '{b}'
        }
      },
      symbolSize: function (val) {
        return val[2] / 8;
      },
      itemStyle: {
        normal: {
          color: color[i]
        }
      },
      data: item[1].map(function (dataItem) {
        return {
          name: dataItem[1].name,
          value: geoCoordMap[dataItem[1].name].concat([dataItem[1].value])
        };
      })
    });
  });

  var option = {
    backgroundColor: '#080a20',
    // title: {
    //   text: '模拟迁徙',
    //   subtext: '数据纯属虚构',
    //   left: 'left',
    //   textStyle: {
    //     color: '#fff'
    //   }
    // },
    tooltip: {
      trigger: 'item'
    },
    legend: {
      orient: 'vertical',
      top: 'bottom',
      left: 'right',
      data: ['北京 Top10', '上海 Top10', '广州 Top10'],
      textStyle: {
        color: '#fff'
      },
      selectedMode: 'single'
    },
    geo: {
      map: 'china',
      label: {
        emphasis: {
          show: false
        }
      },
      roam: true,
      itemStyle: {
        normal: {
          areaColor: '#132937',
          borderColor: '#0692a4'
        },
        emphasis: {
          areaColor: '#0b1c2d'
        }
      }
    },
    series: series
  };
  myChart5.setOption(option);
})();